﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text;
using System.Xml.Linq;
using System.Net.Http.Headers;
using System.Security;
namespace Lesson24__面向对象编程_StringBuilder
{
    internal class Program
    {
        static void Main(string[] args)
        {

            #region 基本概念 

            //使用StrigBuilder类之前应该引用 using Systm.Text 命名空间 


            StringBuilder str = new StringBuilder("123456789");  // 创建一个对象  

            Console.WriteLine(str.Capacity);   //获取空间容量 输出结果为16

            Console.WriteLine(str.Length);   //获取字符长度
            Console.WriteLine(str);

            str.Append("456789");
            Console.WriteLine(str);


            str.AppendFormat("{0}{1}", 789, 451);
            Console.WriteLine(str);

            str.Insert(0, "真实");
            Console.WriteLine(str);

            str.Replace("1", "牛");
            Console.WriteLine(str   );


            //查找
            Console.WriteLine(str[0]);
            str[0] = '我';
            Console.WriteLine(str);
            str.Clear ();
            (str as StringBuilder).Append("123123");
           
            Console.WriteLine(str.ToString());
            if (str.ToString().Equals("123123"))//：如果 str 不是 StringBuilder 类型而是其他类型（比如普通的 string），那么 Clear() 和 Append() 方法将不会存在，或者不会按预期工作。
            {
                Console.WriteLine(" 相等");
            }
            #endregion


        }
    }
}
//用string独特的方法处理特殊的逻辑的时候，就可以使用string
//当射击到循环需要大量的修改字符串的时候，例如，字符串的拼接就可以使用StringBuilder
//如何优化对象

//1:少new对象，少产生垃圾
//2:合理使用static   //静态和程序同生共死
//3:合理使用string 和 StringBuilder
